import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * Created whit IntelliJ IDEA.
 * Description：
 * User：ZHONGCHEN
 * Date:2022-02-28
 * Time:21:49
 */
public class TestDemo {
    /**
     * 6. Z 字形变换
     * 将一个给定字符串 s 根据给定的行数 numRows ，以从上往下、从左到右进行 Z 字形排列。
     * 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时，排列如下：
     *
     * P   A   H   N
     * A P L S I I G
     * Y   I   R
     * 之后，你的输出需要从左往右逐行读取，产生出一个新的字符串，比如："PAHNAPLSIIGYIR"。
     * 请你实现这个将字符串进行指定行数变换的函数：
     * string convert(string s, int numRows);
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode-cn.com/problems/zigzag-conversion
     * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
     * */

    public String convert(String s, int numRows) {
        //当输入的行数小于2;则无论是0行还是1行都无需变换
        if (numRows < 2) {
            return s;
        }
        //新建一个顺序表,有多少行存多个StringBuilder的元素;每个元素对应每一行
        List<StringBuilder> rows = new ArrayList<>();
        for (int i = 0; i < numRows; i++) {
            rows.add(new StringBuilder());
        }
        int i = 0, flag = -1;
        //按顺序遍历字符串;剩下的就是判断每一个字符属于哪一行
        for (char c : s.toCharArray()) {
            rows.get(i).append(c);
            //当i==0 或者i==numRows时就是到了z字形的转折处;需要利用flag来实现转向
            if (i == 0 || i == numRows - 1) {
                flag = -flag;
            }
            i += flag;
        }
        //再将每一行拼接起来就是答案
        StringBuilder ans = new StringBuilder();
        for (StringBuilder row : rows) {
            ans.append(row);
        }
        return ans.toString();
    }

    //最小公倍数=(A*B)/(AB的最大公约数)
    public static void main1(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int A = scanner.nextInt();
        int B = scanner.nextInt();
        int c = fun(A, B);
        System.out.println((A * B) / c);
    }

    public static int fun(int a, int b) {
        if (a % b == 0) {
            return b;
        }
        return fun(b, (a % b));
    }
    //编程题]两种排序方法

    /**
     * 链接：https://www.nowcoder.com/questionTerminal/839f681bf36c486fbcc5fcb977ffe432
     * 来源：牛客网
     * <p>
     * 考拉有n个字符串字符串，任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法： 1.根据字符串的字典序排序。例如：
     * "car" < "carriage" < "cats" < "doggies < "koala"
     * 2.根据字符串的长度排序。例如：
     * "car" < "cats" < "koala" < "doggies" < "carriage"
     * 考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法，考拉要忙着吃树叶，所以需要你来帮忙验证。
     */
    public static void main2(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean flag1 = false;
        boolean flag2 = false;
        String[] s = new String[scanner.nextInt()];
        for (int i = 0; i < s.length; i++) {
            s[i] = scanner.next();
        }
        for (int i = 0; i < s.length - 1; i++) {
            if (s[i].length() > s[i + 1].length()) {
                flag1 = true;
            }
            //可用compareTo方法
            if (s[i].compareTo(s[i + 1]) > 0) {
                flag2 = true;
            }
//            for (int j = 0; j < Math.min(s[i].length(),s[i+1].length()); j++) {
//                if (s[i].charAt(j) > s[i + 1].charAt(j)) {
//                    flag2 = true;
//                    break;
//                }else if (s[i].charAt(j)<s[i+1].charAt(j)) {
//                    break;
//                }else if (j==Math.min(s[i].length(),s[i+1].length())-1){
//                    if (s[i].length()>s[i+1].length()){
//                        flag2 = true;
//                    }
//                }
//            }
            if (flag1 && flag2) {
                break;
            }
        }
        if (flag1 && !flag2) {
            System.out.println("lexicographically");
        } else if (!flag1 && flag2) {
            System.out.println("lengths");
        } else if (flag1 && flag2) {
            System.out.println("none");
        } else {
            System.out.println("both");
        }
    }
}
